package com.example.archive.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.archive.entity.Archive;
import com.example.archive.service.ArchiveService;
import com.example.archive.util.PageParam;
import com.example.archive.util.Result;
import com.example.archive.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 档案API控制器
 * 提供档案相关的API接口
 * 主要用于其他模块调用获取档案信息
 */
@RestController
@RequestMapping("/api/archives")
@CrossOrigin
public class ArchiveApiController {
    
    @Autowired
    private ArchiveService archiveService;
    
    /**
     * 获取档案列表（用于下拉选择）
     * 提供档案基本信息列表，用于其他模块的下拉选择组件
     * 
     * @return 统一响应格式，包含档案列表
     */
    @GetMapping("/list")
    public Result<IPage<Archive>> getArchivesList(@RequestParam(defaultValue = "1") Integer pageNum,
                                                  @RequestParam(defaultValue = "10") Integer pageSize,
                                                  @RequestParam(required = false) String search) {
        try {
            Integer userId = UserContext.getUserId();
            PageParam pageParam = new PageParam(pageNum, pageSize, search);
            return archiveService.listArchives(pageParam, userId);
        } catch (Exception e) {
            return Result.fail(500, "获取失败：" + e.getMessage());
        }
    }
    
    /**
     * 获取简单档案列表（无分页，用于下拉选择）
     * 提供档案基本信息列表，用于其他模块的下拉选择组件
     * 
     * @return 统一响应格式，包含档案列表
     */
    @GetMapping("/simple-list")
    public Result<List<Archive>> getSimpleArchivesList() {
        try {
            List<Archive> archives = archiveService.list();
            return Result.success(archives);
        } catch (Exception e) {
            return Result.fail(500, "获取失败：" + e.getMessage());
        }
    }
} 